Spring Web Flow (SWF) 是Spring Framework的一个脱离模块。这个模块是Spring Web应用开发模块栈的一部分,Spring Web包含Spring MVC。Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的
事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。
简介
Spring Web Flow单元是一个MVC的扩展,它允许你使用一个高阶域定义语言来定义控制器。这个语言用来建模用户交互,需要多次请求到服务器来完成,并可能涉及不同的内容。
基本元素
Flow 可看作是客户端与服务器的一次对话( conversation )。 Flow 的完成要由分多个步骤来实现,在 Spring Web Flow 的语义中,步骤指的就是 state 。 Spring Web Flow 提供了五种 state ,分别是 Action State 、 View State 、 Subflow State 、 Decision State 、 End State ,这些 state 可用于定义 flow 执行过程中的各个步骤。除了 End State 外,其他 state 都可以转换到别的 state ,一般通过在 state 中定义 transition 来实现到其他 state 的转换,转换的发生一般由事件( event )来触发。
项目特点
Spring Web Flow是著名的
Spring框架的子项目。它解决了困扰Web应用程序开发人员的3个主要问题.即用户界面导航的控制、状态管理和模块化,极大地提高了生产效率,尤其适合需要复杂用户
交互界面的Web应用程序。此外,它还借鉴了UML
状态图思想的流定义方式,使得Web流的开发更加自然。
更确切地讲, Spring Web Flow 语义关注的是业务的流程,并未与 Sun 公司的 Web 规范紧密结合,这种描述是更高层次的抽象,差不多是在建模的角度来描述业务流程。
不过, Spring Web Flow 也并非只有抽象,现在还没有哪一种工具或语言可以将一个模型直接转换成相应的应用程序。 Spring Web Flow 更像是抽象建模和技术细节的混血儿,相比于湮没在繁多的控制器和视图中的 Web MVC 应用来讲, Spring Web Flow 提供了如清单 1 所描述的更高层次的抽象,但同时它也整合了像 Unified EL 这样的工具来控制技术上的细节。
购物车示例
查看购物车--(生成订单)-->显示订单--(确认)-->显示确认信息
清单1用 Spring Web Flow 语义表达购物车流程
版本发布
2010年07月20日,Spring Web Flow 2.1.1.RELEASE 发布,该版本是 2.1 的一个维护版本,主要改进内容有:
提取方法从FlowApplication JSF 2到Jsf2FlowApplication(swf - 1261)。
*修复处理的级联属性在AjaxTilesView(swf - 1053)。
*文档DataModel实现(swf - 1358)
*删除Dojo文件从svn和替换为脚本放在一起定制Dojo构建(swf - 1362)。
*删除压缩弹簧。js和弹簧dojo。js文件从svn和压缩在构建(swf - 1363)。
*小JavaScript修复(swf - 1268,swf - 1358)。
2010年08月05日,Spring Web Flow 2.2.0.M1 发布。